package com.hbu.product.hbumallproduct.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hbu.common.valid.ListValue;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.Min;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 商品分类表
 *
 * @author zhaoxiaohan
 * @email 13315217827@163.com
 * @date 2022-10-27 22:15:38
 */
@Data
@TableName("pms_category")
@ToString
public class CategoryEntity implements Serializable {
    /**
     * 分类id
     */
    @TableId
    private Long catId;
    /**
     * 分类名称
     */
    private String name;
    /**
     * 父级id
     */
    private Long parentCid;
    /**
     * 层级
     */
    private Integer catLevel;
    /**
     * 是否显示[0-不显示，1-显示]
     */
    @TableLogic(value = "1", delval = "0")
    @ListValue(values = {0, 1})
    private Integer showStatus;
    /**
     * 排序
     */
    @Min(value = 0,message = "排序字段应为非负数")
    private Integer sort;
    /**
     * 图标地址
     */
    private String icon;
    /**
     * 计量单位
     */
    private String productUnit;
    /**
     * 商品数量
     */
    @Min(value = 0,message = "商品数量应为非负整数")
    private Integer productCount;

    /**
     * JsonInclude 当且仅当child字段不为空的时候才返回
     */
    @TableField(exist = false)
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<CategoryEntity> child;

    public void addChild(CategoryEntity category) {
        if (child == null) {
            child = new ArrayList<>();
        }
        child.add(category);
    }

}
